﻿#region License

// PentaBiz - Sustainable Software Development Framework Copyright (C) 2013 Zoltán Csizmazia
// 
// This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
// 
// This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
// 
// You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 

#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using PentaBiz.Cloud.CloudDb.EntityModel.DataModel.DataTasks;
using PentaBiz.Cloud.CloudDb.EntityModel.MetaModel;
using PentaBiz.Cloud.CloudDb.EntityModel.SystemModel;

namespace PentaBiz.Cloud.Services.Testing.SampleContext
{
    using CloudDb;
    using QueryService;
    using System.Collections.Generic;
    using System.Diagnostics.Contracts;
    using System.Reflection;
    using System.Linq;

    public class TestMetaDbQueryContext : CloudQueryContext<MetaDbContext>
    {
        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaApplications
        /// </summary>
        /// <value>
        ///     The MetaApplications.
        /// </value>
        [Pure]
        public IQueryable<MetaApplication> MetaApplications
        {
            get { return Context.MetaApplications; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaChangeItems
        /// </summary>
        /// <value>
        ///     The MetaChangeItems.
        /// </value>
        [Pure]
        public IQueryable<MetaChangeItem> MetaChangeItems
        {
            get { return Context.MetaChangeItems; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaChangeSets
        /// </summary>
        /// <value>
        ///     The MetaChangeSets.
        /// </value>
        [Pure]
        public IQueryable<MetaChangeSet> MetaChangeSets
        {
            get { return Context.MetaChangeSets; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaChangeSetEndpoints
        /// </summary>
        /// <value>
        ///     The MetaChangeSetEndpoints.
        /// </value>
        [Pure]
        public IQueryable<MetaChangeSetEndpoint> MetaChangeSetEndpoints
        {
            get { return Context.MetaChangeSetEndpoints; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaChangeSetServiceResources
        /// </summary>
        /// <value>
        ///     The MetaChangeSetServiceResources.
        /// </value>
        [Pure]
        public IQueryable<MetaChangeSetServiceResource> MetaChangeSetServiceResources
        {
            get { return Context.MetaChangeSetServiceResources; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaChangeSetSourceCodes
        /// </summary>
        /// <value>
        ///     The MetaChangeSetSourceCodes.
        /// </value>
        [Pure]
        public IQueryable<MetaChangeSetSourceCode> MetaChangeSetSourceCodes
        {
            get { return Context.MetaChangeSetSourceCodes; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaDataTables
        /// </summary>
        /// <value>
        ///     The MetaDataTables.
        /// </value>
        [Pure]
        public IQueryable<MetaDataTable> MetaDataTables
        {
            get { return Context.MetaDataTables; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaDataTableCollectionFields
        /// </summary>
        /// <value>
        ///     The MetaDataTableCollectionFields.
        /// </value>
        [Pure]
        public IQueryable<MetaDataTableCollectionField> MetaDataTableCollectionFields
        {
            get { return Context.MetaDataTableCollectionFields; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaDataTableFields
        /// </summary>
        /// <value>
        ///     The MetaDataTableFields.
        /// </value>
        [Pure]
        public IQueryable<MetaDataTableField> MetaDataTableFields
        {
            get { return Context.MetaDataTableFields; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaDataTableReferenceFields
        /// </summary>
        /// <value>
        ///     The MetaDataTableReferenceFields.
        /// </value>
        [Pure]
        public IQueryable<MetaDataTableReferenceField> MetaDataTableReferenceFields
        {
            get { return Context.MetaDataTableReferenceFields; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaSecurityRoles
        /// </summary>
        /// <value>
        ///     The MetaSecurityRoles.
        /// </value>
        [Pure]
        public IQueryable<MetaSecurityRole> MetaSecurityRoles
        {
            get { return Context.MetaSecurityRoles; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaSecurityUsers
        /// </summary>
        /// <value>
        ///     The MetaSecurityUsers.
        /// </value>
        [Pure]
        public IQueryable<MetaSecurityUser> MetaSecurityUsers
        {
            get { return Context.MetaSecurityUsers; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaTasks
        /// </summary>
        /// <value>
        ///     The MetaTasks.
        /// </value>
        [Pure]
        public IQueryable<MetaTask> MetaTasks
        {
            get { return Context.MetaTasks; }
        }

        ///// <summary>
        ///// <see cref="IQueryable"/> Query face of MetaTaskDataTableReferenceFields
        ///// </summary>
        ///// <value>
        ///// The MetaTaskDataTableReferenceFields.
        ///// </value>
        //[Pure]
        //public IQueryable<PentaBiz.Cloud.CloudDb.EntityModel.MetaModel.MetaTaskDataTableReferenceField> MetaTaskDataTableReferenceFields { get { return Context.MetaTaskDataTableReferenceFields; } }
        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaTaskFields
        /// </summary>
        /// <value>
        ///     The MetaTaskFields.
        /// </value>
        [Pure]
        public IQueryable<MetaTaskField> MetaTaskFields
        {
            get { return Context.MetaTaskFields; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaTaskHandledDataTables
        /// </summary>
        /// <value>
        ///     The MetaTaskHandledDataTables.
        /// </value>
        [Pure]
        public IQueryable<MetaTaskHandledDataTable> MetaTaskHandledDataTables
        {
            get { return Context.MetaTaskHandledDataTables; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of MetaTaskProvidedDataTables
        /// </summary>
        /// <value>
        ///     The MetaTaskProvidedDataTables.
        /// </value>
        [Pure]
        public IQueryable<MetaTaskProvidedDataTable> MetaTaskProvidedDataTables
        {
            get { return Context.MetaTaskProvidedDataTables; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of DataTaskTypes
        /// </summary>
        /// <value>
        ///     The DataTaskTypes.
        /// </value>
        [Pure]
        public IQueryable<DataTaskType> DataTaskTypes
        {
            get { return Context.DataTaskTypes; }
        }

        [Pure]
        public IQueryable<SystemAccessControl> SystemAccessControls
        {
            get { return Context.SystemAccessControls; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of SystemTokenArchives
        /// </summary>
        /// <value>
        ///     The SystemTokenArchives.
        /// </value>
        [Pure]
        public IQueryable<SystemTokenArchive> SystemTokenArchives
        {
            get { return Context.SystemTokenArchives; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of SystemScopes
        /// </summary>
        /// <value>
        ///     The SystemScopes.
        /// </value>
        [Pure]
        public IQueryable<SystemScope> SystemScopes
        {
            get { return Context.SystemScopes; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of SystemRoles
        /// </summary>
        /// <value>
        ///     The SystemRoles.
        /// </value>
        [Pure]
        public IQueryable<SystemRole> SystemRoles
        {
            get { return Context.SystemRoles; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of SystemUsers
        /// </summary>
        /// <value>
        ///     The SystemUsers.
        /// </value>
        [Pure]
        public IQueryable<SystemUser> SystemUsers
        {
            get { return Context.SystemUsers; }
        }

        /// <summary>
        ///     <see cref="IQueryable" /> Query face of SystemTokens
        /// </summary>
        /// <value>
        ///     The SystemTokens.
        /// </value>
        [Pure]
        public IQueryable<SystemToken> SystemTokens
        {
            get { return Context.SystemTokens; }
        }
    }
}